Two Approaches of Showing Program Equivalence CSC 2108 Automated Verification
نویسنده
چکیده
We describe two approaches to showing program equivalence. Program equivalence is useful for showing that a program created by an optimizing compiler is correct. The optimized version of the program can be compared to a program that is created from the same source code by a verified compiler that performs no optimizations. Our first approach consists of using a theorem prover, ACL2, to prove that two programs are equivalent. For this approach to work we must transform the instructions of the programs into a representation that ACL2 can work with. Our second approach consists of calculating the weakest pre-condition needed for two programs to be correct, and then using ACL2 to prove that the pre-condition is met. We use both approaches to show the equivalence of several programs.
منابع مشابه
Automated Verification of Relational While-Programs
Software verification is essential for safety-critical systems. In this paper, we illustrate that some verification tasks can be done fully automatically. We show how to automatically verify imperative programs for relation-based discrete structures by combining relation algebra and the well-known assertion-based verification method with automated theorem proving. We present two examples in det...
متن کاملVerification of Source Code Transformations by Program Equivalence Checking
Typically, a combination of manual and automated transformations is applied when algorithms for digital signal processing are adapted for energy and performance-efficient embedded systems. This poses severe verification problems. Verification becomes easier after converting the code into dynamic single-assignment form (DSA). This paper describes a method to prove equivalence between two program...
متن کاملRegression Verification Using Impact Summaries
Regression verification techniques are used to prove equivalence of closely related program versions. Existing regression verification techniques leverage the similarities between program versions to help improve analysis scalability by using abstraction and decomposition techniques. These techniques are sound but not complete. In this work, we propose an alternative technique to improve scalab...
متن کاملTool-Based Verification of a Relational Vertex Coloring Program
We present different approaches of using a special purpose computer algebra system and theorem provers in software verification. To this end, we first develop a purely algebraic while-program for computing a vertex coloring of an undirected (loop-free) graph. For showing its correctness, we then combine the well-known assertion-based verification method with relation-algebraic calculations. Bas...
متن کاملProgramming with Proofs: Language-Based Approaches to Totally Correct Software
Tremendous progress has been made in automated and semi-automated verification since the seminal works on program verification. Automated deductive techniques like model checking have been highly successful for many verification tasks (e.g., [17, 18, 13]). Impressive advances continue to be made in static analysis, type systems, and static bug finding (e.g., [21, 12]). These approaches aim to v...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2008